package main

import (
	"fmt"
)

type DivideData struct {
	dividee int
	divider int
}

func (dData DivideData) Error() string {
	var errorString string = `
	Cannot procceed, because the divider is 0.
	Dividee: %d
	Divider: 0
	`
	return fmt.Sprintf(errorString, dData.dividee)
}

func divide(num1 int, num2 int) (result int, errorMsg string) {
	if num2 == 0 {
		dData := DivideData{
			dividee: num1,
			divider: num2,
		}
		errorMsg = dData.Error()
		return
	} else {
		return num1 / num2, ""
	}
}

func printResult(result int, errorMsg string) {
	if errorMsg == "" {
		fmt.Printf("result: %d\n", result)
	} else {
		fmt.Printf("error: %s\n", errorMsg)
	}
}

func main() {
	result, errorMsg := divide(100, 10)
	printResult(result, errorMsg)
	result, errorMsg = divide(100, 0)
	printResult(result, errorMsg)
	result, errorMsg = divide(100, -10)
	printResult(result, errorMsg)
}
